package util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Utilities {
	// 글 목록에서 한페이지에 보여질 게시물 수
	public static final int CONTENT_PER_PAGE = 10;
	// 한 페이지 그룹으로 묶을 페이지의 개수
	public static final int PAGE_PER_PAGEGROUP = 10;

	private Utilities() {
	}

	// 호출 된 시점의 일시를 14자리 String 값으로 만들어 return;
	// 예)20120512100524 (yyyyMMssHHmmss)
	public static String getNow() {
		Date date = new Date();
		SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
		return sf.format(date);
	}

	/**
	 * jsp에서 입력받은 날짜를 DB용으로 변환
	 * @param date
	 * @return
	 */
	public static String changeDateFormatForDB(String date){
		return date.substring(0, 4) + date.substring(6, 8) + date.substring(10, 12) + "000000"; 
	}
	
	// 인수로 14자리 형태 일시를 받아 날짜만 yyyy.MM.dd형태의 String 으로 만들어 return
	// 목록에서 작성일시를 보여줄때 사용 할 메소드

	public static String changeDayFormat(String dateTime) {
		return dateTime.substring(0, 4) + "." + dateTime.substring(4, 6) + "."
				+ dateTime.substring(6, 8);
	}

	// 인수로 14자리 형태의 일시를 받아 yyyy.MM.dd HH:mm:ss형태의 String 으로 만들어 return
	public static String changeDayTimeFormat(String dateTime) {
		return dateTime.substring(0, 4) + "." + dateTime.substring(4, 6) + "."
				+ dateTime.substring(6, 8) + " " + dateTime.substring(8, 10)
				+ ":" + dateTime.substring(10, 12) + ":"
				+ dateTime.substring(12, 14);
	}

	// TextArea에서 입력 받은 글 내용을 HTML로 출력 될 때에
	// 맞는 형식으로 변경하는 메소드
	// 새글등록, 답변글 등록, 글 수정시 사용
	// > - &gt;
	// < - &lt;
	// \n - <br>
	// 공백 - &nbsp;
	public static String changeContentForDB(String content) {
		String content2;
		content2 = content.replaceAll(">", "&gt;");
		content2 = content2.replaceAll("<", "&lt;");
		content2 = content2.replaceAll("\n", "<br>");
		content2 = content2.replaceAll(" ", "&nbsp;");
		return content2;
	}

	// DB에 저장된 content를 TextArea에 출력할 형식으로 변경
	// 글 수정 폼, 답글 폼 출력 시 사용
	// <br> \n
	// &gt; - >
	// &lt; - <
	// &nbsp; 공백

	public static String changeContentForTextArea(String content) {
		String content2;
		content2 = content.replaceAll("<br>", "\n");
		content2 = content2.replaceAll("&gt;", ">");
		content2 = content2.replaceAll("&lt;", "<");
		content2 = content2.replaceAll("&nbsp;", " ");
		return content2;
	}
	
	/**
	 * eclipse와 tomcat을 동기화
	 * 
	 * @param uploadDirectory : path of tomcat's upfile
	 * @param eclipseDirectory : path of eclipse project's upfile
	 * @throws IOException
	 */
	public static void synchronize(String uploadDirectory, String eclipseDirectory) throws IOException{
		File file = new File(uploadDirectory);
		File[] files = file.listFiles();
		for(int i = 0; i<files.length; i++){
			FileOutputStream outputStream = new FileOutputStream(eclipseDirectory+files[i].getName());
			FileReader fileReader = new FileReader(files[i]);
			
			int read = fileReader.read();
			while(read != -1){
				outputStream.write(read);
				read = fileReader.read();
			}
		}
	}
}
